import axios from "axios";

// 创建 Axios 实例
const request = axios.create({
  baseURL: "http://172.20.64.14:8000/api",
  timeout: 10000,
});

// 定义无需 token 的白名单（可以是完整路径，也可以是路径的部分关键词）
const whitelist = ["/login", "/register", "/public/resource"];

request.interceptors.request.use(
  (config) => {
    // 获取 token
    const token = localStorage.getItem("token");

    // 判断当前请求是否在白名单中
    const isWhitelisted = whitelist.some((path) => config.url.includes(path));

    if (!isWhitelisted && token) {
      // 如果不是白名单并且有 token，添加 Authorization 头
      config.headers.Authorization = `Bearer ${token}`;
    }

    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器可根据需求处理（可选）
request.interceptors.response.use(
  (response) => response,
  (error) => {
    // 处理未授权错误或其他状态码
    if (error.response?.status === 401) {
      console.error("Unauthorized! Redirecting to login...");
      window.location.href = "/login"; // 重定向到登录页面
    }
    return Promise.reject(error);
  }
);

export default request;
